#! /bin/sh -e

# librsync -- the library for network deltas
# Copyright (C) 2001, 2014 by Martin Pool <mbp@sourcefrog.net>

# mutate.test: Make some deterministic pseudorandom changes to a file and
# compute deltas across them.
 
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation; either version 2.1 of
# the License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
# 
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

srcdir='.'

. $srcdir/testcommon.sh

old=$srcdir/COPYING

if which perl >/dev/null
then
    :
else
    echo "Skipped because perl was not found";
    exit 77;
fi

old="$tmpdir/old"
cat $srcdir/*.[ch] >"$old"
new="$tmpdir/new"
sig="$tmpdir/sig"
delta="$tmpdir/delta"
out="$tmpdir/out"
i=0

while test $i -lt 100
do
    perl "$srcdir/mutate.pl" $i 5 <"$old" >"$new" 2>>"$tmpdir/mutate.log"

    for hashopt in '' -Hmd4 -Hblake2
    do
	run_test ${RDIFF} -f $debug $hashopt signature $old $sig
	run_test ${RDIFF} -f $debug delta $sig $new $delta
	run_test ${RDIFF} -f $debug patch $old $delta $out

	check_compare "$new" "$out" "mutate $i $old $new"
    done

    i=`expr $i + 1`
done
true
